package com.sy.service;

import com.sy.dto.StudentClassTreeResult;
import com.sy.entity.Student;
import com.sy.vo.StudentPagingVo;
import com.sy.vo.StudentVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author:fma
 * @Date: 2021/10/11 18:22
 */
public interface StudentService {

    /**
     * 修改学生个人信息
     * @param studentVo 学生vo
     * @return 是否修改成功
     */
    boolean editStuBySno(StudentVo studentVo);

    /**
     * 查询学生个人信息，进行密码修改操作
     * @param sno 学生的学号
     * @return 学生的个人信息
     */
    Student getStuPwdBySno(Integer sno);

    /**
     * 查询总学生的数量
     * @Author:zhf
     * @return 学生的数量
     */
    Integer getStudentsSize();

    /**
     * 查询分页学生信息
     * @Author:zhf
     * @param pageNum,pageSize
     * @return 学生信息
     */
    List<Student> queryAllStudents(Integer pageNum, Integer pageSize);

    /**
     * 获取所有年级和班级名字
     * @Author:zhf
     * @return 年级和班级名字
     */
    List<StudentClassTreeResult> getGradeAndClassName();

    /**
     * 通过年级和班级查询学生信息的数量
     * @Author:zhf
     * @param grade,className
     * @return 学生信息数量
     */
    Integer getStudentsNumByGradeAndClassName(String grade, String className);

    /**
     * 查询通过年级班级查询分页学生信息
     * @Author:zhf
     * @param studentPagingVo
     * @return 学生信息
     */
    List<Student> queryStudentsByGradeAndClassName(StudentPagingVo studentPagingVo);

    /**
     * 通过学生姓名学生信息的数量
     * @Author:zhf
     * @param studentName
     * @return 学生信息数量
     */
    Integer getStudentsNumByStudentName(String studentName);

    /**
     * 查询通过学生姓名查询分页学生信息
     * @Author:zhf
     * @param studentPagingVo
     * @return 学生信息
     */
    List<Student> queryStudentsByStudentName(StudentPagingVo studentPagingVo);

    /**
     * 修改学生信息
     * @Author:zhf
     * @param student
     * @return 是否成功
     */
    Boolean redactStudent(Student student);

    /**
     * 添加学生信息
     * @param student
     * @return 是否成功
     */
    Boolean addStudents(Student student);

    /**
     *  @Author:zhf
     * 通过主键Id删除学生信息
     * @param id
     * @return 是否成功
     */
    Boolean delStudentById(Integer id);


}
